package com.nextel.gui.dialog;
 
import com.nextel.ui.OHandset;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

import java.util.Timer;
import java.util.TimerTask;

import java.io.IOException;
import javax.microedition.lcdui.Font;
import pe.com.nextel.idioma.IdiomaManager;

/**
 * Construye una pantalla que se visualiza por dos segundos y muestra una
 * imagen almacenada en una carpeta /img dentro de la raiz del paquete con el
 * nombre splash.png
 *  @author Edgard Espinoza
 */
public class Splash extends Canvas {
    // estoy modificacndo
    private Displayable displayable;
    private Timer timer;
    private TimerSplash tm;
    private String imageName = "/res/splash.PNG";
    private Image img;
    private String version = "1.0";
 
    /**
     * @param display el display donde se visualizara la imagen
     * @param displayable el displayable que se visualizara luego de los 2 segundos
     * que se muestre la imagen.
     */
    public Splash(Displayable displayable) {
//        this.display = display;
        this.displayable = displayable;
    }

    public Splash(Displayable displayable, String pImageName, String pversion) {
//        this.display = display;
        this.displayable = displayable;
        this.imageName = pImageName;
        this.version = pversion;
    }

    protected void showNotify() {
        if (timer == null) {
            timer = new Timer();
            tm = new TimerSplash();
            timer.schedule(tm, 1000);
        }

    }

    protected void paint(Graphics g) {
        // LLenamos la pantalla de blanco para que parezca una pantalla distinta
        g.setColor(255, 255, 255);
        g.fillRect(0, 0, getWidth(), getHeight());

        try {
            
             img = Image.createImage(imageName);
            // System.out.println("creado");
            g.drawImage(img, getWidth() / 2, getHeight()/3, Graphics.TOP | Graphics.HCENTER);

            g.setColor(0x000000);
            g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_SMALL));
            g.drawString(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_VERSION) + ": " + this.version, 1 * (getWidth() / 12), 9 * (getHeight() / 10), Graphics.BOTTOM | Graphics.LEFT);

            img = null;
            
             System.gc( );
            
        } catch (IOException ioex) {
            ioex.printStackTrace();
        }
    }

    private void terminarSplash() {
        
        OHandset.getDisplay().setCurrent(displayable);
        //display.setCurrent(displayable);

        destroyTimers();

    }

    //Clase TimerTask
    private class TimerSplash extends TimerTask {

        public final void run() {
            terminarSplash();
        }
    }

    protected void hideNotify() {
//        System.out.println("hideNotify");
        destroyTimers();
    }

    private void destroyTimers() {
        
        img = null;
        
        if (tm != null) {
            tm.cancel();
            tm = null;
        }

        if (timer != null) {
            timer.cancel();
            timer = null;
        }
        
        System.gc( );
    }
}
